import 'dart:io';

import 'package:example_example/pages/tabs/WebOrder.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
//import 'package:flutter_file_preview/flutter_file_preview.dart';
import 'YColors.dart';
import 'pages/Tabs.dart';
import 'pages/person/Login.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'routes/Routes.dart';
import 'services/TLSizeFit.dart';
import 'util/LogUtil.dart';
import 'util/Storage.dart';
import 'global/Global.dart';
import 'package:jpush_flutter/jpush_flutter.dart';

import 'util/ToastUtils.dart';

void main() async{
  runApp(MyApp());
  // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
  //   //设置状态栏颜色
  //   statusBarColor: YColors.l,
  // ));
}


class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  /**
   * flagLogin
   * false 未登录
   * true  已登录
   */
  var flagLogin ;

  /**
   * routeFlag
   * -1 初始状态
   * 0 未登录
   * 1 已登录
   */
  var routeFlag = -1;

  var loginState = -1;

  var routesPath = "";


  @override
  void initState() {
    super.initState();
    // setLight();
    getStorageData();

//    this.initJpush();
//    https://blog.csdn.net/xiaopihair123/article/details/125331754
//     if (Platform.isAndroid) {
    // 设置android状态栏为透明的沉浸，在渲染之前MaterialApp组件会覆盖掉这个值。
    // SystemUiOverlayStyle systemUiOverlayStyle = const SystemUiOverlayStyle(
    //   // statusBarColor: Colors.transparent, //状态栏的颜色根据需要更改
    //   statusBarColor: YColors.l, //状态栏的颜色根据需要更改
    // );
    // SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
    // }
  }

  setLight() {
    // 白色沉浸式状态栏颜色  白色文字
    SystemUiOverlayStyle light = SystemUiOverlayStyle(
        systemNavigationBarColor: Color(0xFF000000),
        systemNavigationBarDividerColor: null,

        /// 注意安卓要想实现沉浸式的状态栏 需要底部设置透明色
        statusBarColor: YColors.l,
        systemNavigationBarIconBrightness: Brightness.light,
        statusBarIconBrightness: Brightness.light,
        statusBarBrightness: Brightness.dark
    );
    SystemChrome.setSystemUIOverlayStyle(light);
  }

  getStorageData() async {
    LogUtil.v("是否有缓存的数据1111");
    var strStor = await Storage.getString(Global.LOGINDATA);
    LogUtil.init(title: "来自LogUtil", isDebug: false, limitLength: 800);
    LogUtil.v("initState 有缓存strStor:$strStor");

    if (strStor != null) {
      setState(() {
        flagLogin = true;
        routeFlag = 1;
        routesPath = "/";
      });
      LogUtil.v("已经登录了");
//      Navigator.pushNamed(context, '/');
    } else {
      LogUtil.v("没有登录，去登录");
      setState(() {
        flagLogin = false;
        routeFlag = 0;
        routesPath = "/LoginPage";
      });
//      Navigator.pushNamed(context, '/LoginPage');
    }
  }

  @override
  Widget build(BuildContext context) {
//    myContext = context;

    return MaterialApp(
//      home: Scaffold(
//        appBar: AppBar(
//          title: const Text('Plugin example app'),
//        ),
//        body: routeFlag ==-1 ? setNULLBodyView(context): routeFlag== 0 ? LoginPage():Tabs(),
//      ),
      home: routeFlag == -1 ? setNULLBodyView(context) : routeFlag == 0
          ? LoginPage()
          : WebOrderPage(), //Tabs  WebOrderPage
//        home:  routeFlag== 0 ? LoginPage():Tabs(),
//      home: Builder(builder: buildScaffold), //Builder添加后才能跳转成功
//        initialRoute: routesPath, // 初始化的时候加载的路由，这个方法不行的
      onGenerateRoute: onGenerateRoute,
    );
  }

  initJpush() async {
    LogUtil.v("初始化极光推送的功能");
    JPush jpush = new JPush();
    //获取注册的id
    jpush.getRegistrationID().then((rid) {
      print("获取注册的id:$rid");
    });
    //初始化
//    插件版本 >= 0.0.8 android 端支持在 setup 方法中动态设置 channel，动态设置的 channel 优先级比 manifestPlaceholders 中的 JPUSH_CHANNEL 优先级要高。
    jpush.setup(
      appKey: "5d3f34bc7315e47e68864935",
      channel: "theChannel",
      production: false,
      debug: true, // 设置是否打印 debug 日志
    );

    //设置别名  实现指定用户推送
    jpush.setAlias("jg12345").then((map) {
      print("设置别名成功");
      ToastUtils.toast("设置别名成功");
    });

//    申请推送权限，注意这个方法只会向用户弹出一次推送权限请求（如果用户不同意，之后只能用户到设置页面里面勾选相应权限），需要开发者选择合适的时机调用。
    jpush.applyPushAuthority(new NotificationSettingsIOS(
        sound: true,
        alert: true,
        badge: true));

    try {
      //监听消息通知
      jpush.addEventHandler(
        // 接收通知回调方法。
        onReceiveNotification: (Map<String, dynamic> message) async {
          print("flutter onReceiveNotification: $message");
        },
        // 点击通知回调方法。
        onOpenNotification: (Map<String, dynamic> message) async {
          print("flutter onOpenNotification: $message");
        },
        // 接收自定义消息回调方法。
        onReceiveMessage: (Map<String, dynamic> message) async {
          print("flutter onReceiveMessage: $message");
        },
      );
    } catch (e) {
      print('极光sdk配置异常');
    }
  }

  /**
   * https://segmentfault.com/q/1010000019349641
   */
  Future _validateLogin() async {
    Future<dynamic> future = Future(() async {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      return prefs.getString(Global.LOGINDATA);
    });

    LogUtil.v("initState 有缓存:");

    future.then((val) {
      if (val == null) {
        //        Navigator.pushNamed(context, '/LoginPage');
//        setState(() {
//          flagLogin = false;
//          routeFlag = 0;
//          routesPath = "/LoginPage";
//        });
//        return MaterialApp(
////        home: Tabs(),
//          initialRoute: '/LoginPage', // 初始化的时候加载的路由
////      initialRoute: '/',  // 初始化的时候加载的路由
//          onGenerateRoute: onGenerateRoute,
//        );

        LogUtil.v("没有缓存，去登录吧");
        Navigator.pushNamed(context, '/LoginPage',);
      } else {
        LogUtil.v("有缓存，直接去tab页面");
        Navigator.pushNamed(context, '/',);
//        setState(() {
//          flagLogin = true;
//          routeFlag = 1;
//          routesPath = "/";
//        });
//        return MaterialApp(
//          initialRoute: '/LoginPage', // 初始化的时候加载的路由
//          onGenerateRoute: onGenerateRoute,
//        );

//        Navigator.pushNamed(context, '/');
      }
    }).catchError((_) {
      print("catchError");
    });
  }

  ///创建一个widget
  Widget buildScaffold(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("第一个页面"),
      ),
      body: Column(
        children: <Widget>[
          Text(
            "我是工单市场的数据了",
            style: TextStyle(fontSize: 18, color: Colors.green),
          ),
          InkWell(
            child: Text("跳转了吧"),
            onTap: () {
              print("//...去打印数据了吧");
//            Navigator.push(context, MaterialPageRoute(builder: (_) {
//              return new Document();
//            }));
              Navigator.of(context).push(MaterialPageRoute(
                builder: (context) {
//                  return Document(); //返回的是需要跳转单页面
                },
              ));
            },
          ),
          new Container(
            height: 20,
          ),

//          new FlatButton(
//              child: new Text("Open Online Xls"),
//              onPressed: () {
//                FlutterFilePreview.openFile(
//                    "https://gitee.com/kongkongss/flutter_file_preview/raw/master/test/docs/test_file_for.xlsx",
//                    title: 'Online Xls');
//              }),
        ],
      ),
    ); //Scaffo
  }

  Widget setNULLBodyView(BuildContext context) {
    return Container(
      child: Text(""),
      color: YColors.t,
    );
  }

//  原文链接：https://blog.csdn.net/believeinbelieve/article/details/89298984

  Widget setBodyView(BuildContext context) {
    return Column(
      children: <Widget>[
        Text(
          "我是工单市场的数据了",
          style: TextStyle(fontSize: 18, color: Colors.green),
        ),
        InkWell(
          child: Text("跳转了吧"),
          onTap: () {
            print("//...去打印数据了吧");
//            Navigator.push(context, MaterialPageRoute(builder: (_) {
//              return new Document();
//            }));
            Navigator.of(context).push(MaterialPageRoute(
              builder: (context) {
//                return Document(); //返回的是需要跳转单页面
              },
            ));
          },
        ),
        new Container(
          height: 20,
        ),
//        new FlatButton(
//            child: new Text("Open Online Pdf"),
//            onPressed: () {
//              FlutterFilePreview.openFile(
////                      "https://gitee.com/kongkongss/flutter_file_preview/raw/master/test/docs/test_file_for.pdf",
//                  "https://test90.cebserv.com/cloudAccount/LHIntroduce.pdf",
//                  title: 'Online PDF');
//            }),
        new Container(
          height: 20,
        ),
        new Container(
          height: 20,
        ),
//        new FlatButton(
//            child: new Text("Open Online Xls"),
//            onPressed: () {
//              FlutterFilePreview.openFile(
//                  "https://gitee.com/kongkongss/flutter_file_preview/raw/master/test/docs/test_file_for.xlsx",
//                  title: 'Online Xls');
//            }),
      ],
    );
  }

}
